package com.imooc.miaosha.util;

import com.alibaba.fastjson.JSON;

public class BeanUtil {

    // TODO: 2021/1/19 对基本数据类型还可以优化，比如对Float、Double等的判断
    public static <T> String beanToString(T t){
        //这里应该对基本数据类型进行特殊处理
        // TODO: 2021/1/19 思考一下，难道JSON#toJSONString没有这么智能吗？连基本数据类型都不能处理？
        if (t==null) return null;
        Class<?> clazz=t.getClass();
        if (clazz == Integer.class) return t+"";
        else if (clazz==String.class) return (String)t;
        else if (clazz==Long.class) return t+"";
        else return JSON.toJSONString(t);

    }
    public static  <T> T stringToBean(String value,Class<T> clazz){
        /*
         * 上面的todo问题得到了解答，如果不处理基本数据类型的话会有报错：
         * java.lang.Integer cannot be cast to com.alibaba.fastjson.JSONObject
         * 所以基本数据类型需要单独判定*/
        if (value==null||value.length()<=0||clazz==null) return null;
        if (clazz == Integer.class) return (T) Integer.valueOf(value);
        else if (clazz==String.class) return (T)value;
        else if (clazz==Long.class) return (T) Long.valueOf(value);
        return JSON.toJavaObject(JSON.parseObject(value),clazz);

    }
}
